// 对于axios进行二次封装
// 引入axios
import axios from "axios";
// 引入进度条插件nprogress
import nprogress from 'nprogress'
// 引入进度条插件nprogress样式
import 'nprogress/nprogress.css'

// 利用axios对象的方法create, 去创建一个axios实例
const requests = axios.create({
  // 配置对象
  // `baseURL` 将自动加在 `url` 前面，除非 `url` 是一个绝对 URL。
  // 它可以通过设置一个 `baseURL` 便于为 axios 实例的方法传递相对 URL
  // baseURL: 'http://127.0.0.1:8889', //本地
  baseURL: 'http://124.223.190.42:8889', //上线
  // 代表请求超时的时间为5s
  timeout: 15000
});
// 请求拦截器: 在发送请求之前,请求拦截器可以检测到,可以在请求之前做哪些事情
requests.interceptors.request.use((config) => {
  // 判断用户token,添加对应请求头
  if (localStorage.getItem('WALLTOKEN')) {
    config.headers.Authorization = localStorage.getItem('WALLTOKEN')
  }
  // 进度条开始
  nprogress.start()
  return config
})
// 响应拦截器
requests.interceptors.response.use((res) => {
  // 成功的回调函数:服务器响应数据回来以后,响应拦截器可以检测到,可以做一些事情
  // 进度条结束
  nprogress.done()
  return res.data
}, (error) => {
  // 响应失败的回调函数
  return Promise.reject(new Error(error))
})
// 对外暴露
export default requests